package com.cxyzy.eventbusdemo

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import android.widget.Toast
import com.cxyzy.eventbusdemo.event.BaseEvent
import com.cxyzy.eventbusdemo.event.RefreshEvent
import kotlinx.android.synthetic.main.activity_second.*
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode

/**
 * customized event type
 */
class CustEventTypeActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_second)
        EventBus.getDefault().register(this)
        postBtn.setOnClickListener { EventBus.getDefault().post(RefreshEvent("发射了一个事件")) }
    }

    /**
     * 自定义一个方法 接收事件,方法名字可以随便写。
     * 发送的数据类型可以自行定义，一般项目中为了区分不同的消息，会定义一个基类，然后派生出不同
     */
    @Subscribe(threadMode = ThreadMode.MAIN)
    fun onEvent(event: BaseEvent) {
        if (event is RefreshEvent) {
            Toast.makeText(this, "Refresh Event：" + event.info, Toast.LENGTH_SHORT).show()
        }
    }

    override fun onDestroy() {
        super.onDestroy()
        //取消注册 , 防止Activity内存泄漏
        EventBus.getDefault().unregister(this)
    }
}
